<template>
  <div>
    <upload-excel :on-success="success"></upload-excel>
  </div>
</template>

<script>
import { importEmployee } from "@/api/employees";
export default {
  props: {},
  data() {
    return {};
  },
  created() {},
  mounted() {},
  watch: {},
  computed: {},
  methods: {
    async success({ header, results }) {
      // header、results 中的数据都是中文
      /* 
        username: "", 性名
        mobile: "", 手机号
        formOfEmployment: "", 
        workNumber: "", 工号
        departmentName: "",
        timeOfEntry: "", 入职日期
        correctionTime: "", 转正日期
        */
      const userRelations = {
        入职日期: "timeOfEntry",
        手机号: "mobile",
        姓名: "username",
        转正日期: "correctionTime",
        工号: "workNumber",
      };
      const arr = [];
      results.forEach((item) => {
        const userInfo = {};
        //Object.keys(item) 这个数组的，每一个对象，都变成了数组，数组内容是这个对象的 键
        Object.keys(item).forEach((key) => {
          // userInfo[userRelations[key]] = item[key];
          if (
            userRelations[key] === "timeOfEntry" ||
            userRelations[key] === "correctionTime"
          ) {
            // 后端接口限制了，不能是字符串，需要转化时间类型
            userInfo[userRelations[key]] = new Date(
              this.formatDate(item[key], "/")
            ); // 只有这样才能存入数据库
          } else {
            userInfo[userRelations[key]] = item[key];
          }
        });
        arr.push(userInfo);
      });
      console.log(arr);
      // 当测试这个的时候，出现 “ 系统繁忙”  则有两个方案解决
      /* 
        第一种
            在 页面中，手机号是不能重复的
            可以在页面中，删掉excel中那三条数据
        第二种
            修改默认导入excel 的 模板内容
      */
      await importEmployee(arr); // 调用导入接口
      this.$message.success("导入excel成功！");
      this.$router.back();
    },
    // 当excel中有日期格式的时候，实际转化的值为一个数字，我们需要一个方法进行转化
    formatDate(numb, format) {
      const time = new Date((numb - 1) * 24 * 3600000 + 1);
      time.setYear(time.getFullYear() - 70);
      const year = time.getFullYear() + "";
      const month = time.getMonth() + 1 + "";
      const date = time.getDate() - 1 + "";
      if (format && format.length === 1) {
        return year + format + month + format + date;
      }
      return (
        year +
        (month < 10 ? "0" + month : month) +
        (date < 10 ? "0" + date : date)
      );
    },
  },
  components: {},
};
</script>
<style  scoped>
</style>